import { httpGet, httpPost, httpPut, httpDel } from "@/appBase/request"
import { createPageDataPromise, toData, toPageData, toPageQueryParam } from "@/appBase/utils"

/**
 * 查询广告列表
 * @param {Object} queryParam
 * @param {String} queryParam.categoryCode 分类编码
 * @param {Number} queryParam.status 状态(1-正常 -1停用)
 * @param {String} queryParam.title 标题
 * @param {String} queryParam.type 字典项编码
 * @param {String} queryParam.beginTime 开始时间
 * @param {String} queryParam.endTime 结束时间
 * @param {Object} pageParam
 * @param {Number} pageParam.pageNo 
 * @param {Number} pageParam.pageSize 
 */
export function queryAdvertList(queryParam, pageParam) {
    return httpGet(`/common/advert/list`, toPageQueryParam(queryParam, pageParam)).then((result) => toPageData(result, pageParam));
}

/**
 * 添加广告
 * @param {Object} params
 * @param {String} params.id
 * @param {String} params.categoryCode 字典项编码
 * @param {String} params.link 链接
 * @param {String} params.picUrl 图片地址
 * @param {String} params.remark 备注
 * @param {Number} params.sortNo 排序号（升序）
 * @param {Number} params.status 状态(1-正常 -1停用)
 * @param {String} params.title 标题
 * @param {String} params.type 字典类型编码
 */
export function addAdvert(params) {
    return httpPost(`/common/advert`, params).then((result) => toData(result));
}

/**
 * 修改广告
 * @param {Object} params
 * @param {String} params.id
 * @param {String} params.categoryCode 字典项编码
 * @param {String} params.link 链接
 * @param {String} params.picUrl 图片地址
 * @param {String} params.remark 备注
 * @param {Number} params.sortNo 排序号（升序）
 * @param {Number} params.status 状态(1-正常 -1停用)
 * @param {String} params.title 标题
 * @param {String} params.type 字典类型编码
 */
export function updateAdvert(params) {
    return httpPut(`/common/advert`, params).then((result) => toData(result));
}

/**
 * 查询广告详情
 * @param {Object} params
 * @param {String} params.id
 */
export function queryAdvertDetail(params) {
    return httpGet(`/common/advert/${params.id}`).then((result) => toData(result));
}

/**
 * 修改广告状态
 * @param {Object} params
 * @param {String} params.id
 * @param {Number} params.status -1=无效，1=有效
 */
export function updateAdvertStatus(params) {
    return httpPut(`/common/advert/status`, params).then((result) => toData(result));
}

/**
 * 删除广告
 * @param {Object} params
 * @param {String} params.id
 */
export function delAdvert(params) {
    return httpDel(`/common/advert/${params.id}`).then((result) => toData(result));
}

/**
 * 修改广告序号
 * @param {Object} params
 * @param {String} params.id
 * @param {Number} params.sortNo 排序号
 */
export function updateAdvertSort(params) {
    return httpPut(`/common/advert/sort`, params).then((result) => toData(result));
}

/**
 * 查询试题列表
 * @param {Object} queryParam
 * @param {Number} queryParam.title 题目
 * @param {String} queryParam.type 类型 1-判断 2-单选 3-多选 4-填空 5-问答
 * @param {Number} queryParam.status 状态(1-正常 -1停用)
 * @param {Object} pageParam
 * @param {Number} pageParam.pageNo
 * @param {Number} pageParam.pageSize
 */
export function queryExamQuestionList(queryParam, pageParam) {
    return httpGet(`/exam/question/list`, toPageQueryParam(queryParam, pageParam)).then((result) => toPageData(result, pageParam));
}

/**
 * 添加试题
 */
export function addExamQuestion(params) {
    return httpPost(`/exam/question`, params).then((result) => toData(result));
}

/**
 * 修改试题
 */
export function updateExamQuestion(params) {
    return httpPut(`/exam/question`, params).then((result) => toData(result));
}

/**
 * 查询试题详情
 * @param {Object} params
 * @param {String} params.id
 */
export function queryExamQuestionDetail(params) {
    return httpGet(`/exam/question/${params.id}`).then((result) => toData(result));
}

/**
 * 修改试题状态
 * @param {Object} params
 * @param {String} params.id
 * @param {Number} params.status -1=无效，1=有效
 */
export function updateExamQuestionStatus(params) {
    return httpPut(`/exam/question/status`, params).then((result) => toData(result));
}

/**
 * 删除试题
 * @param {Object} params
 * @param {String} params.id
 */
export function deleteExamQuestion(params) {
    return httpDel(`/exam/question/${params.id}`).then((result) => toData(result));
}

/**
 * 查询试卷列表
 * @param {Object} queryParam
 * @param {String} queryParam.categoryId 分类ID
 * @param {String} queryParam.author 出卷人
 * @param {Number} queryParam.status 状态(1-正常 -1停用)
 * @param {String} queryParam.title 试卷名称
 * @param {String} queryParam.beginTime 开始时间
 * @param {String} queryParam.endTime 结束时间
 * @param {Object} pageParam
 * @param {Number} pageParam.pageNo 
 * @param {Number} pageParam.pageSize 
 */
export function queryExampaperList(queryParam, pageParam) {
    return httpGet(`/exam/paper/list`, toPageQueryParam(queryParam, pageParam)).then((result) => toPageData(result, pageParam));
}

/**
 * 添加试卷
 * @param {Object} params
 * @param {String} params.author 出卷人
 * @param {String} params.categoryId 分类ID
 * @param {String} params.description 描述
 * @param {String} params.id id
 * @param {Number} params.status 状态(1-正常 -1停用)
 * @param {String} params.title 试卷名称
 */
export function addExampaper(params) {
    return httpPost(`/exam/paper`, params).then((result) => toData(result));
}

/**
 * 修改试卷
 * @param {Object} params
 * @param {String} params.author 出卷人
 * @param {String} params.categoryId 分类ID
 * @param {String} params.description 描述
 * @param {String} params.id id
 * @param {Number} params.status 状态(1-正常 -1停用)
 * @param {String} params.title 试卷名称
 */
export function updateExampaper(params) {
    return httpPut(`/exam/paper`, params).then((result) => toData(result));
}

/**
 * 查询试卷详情
 * @param {Object} params
 * @param {String} params.id
 */
export function queryExampaperDetail(params) {
    return httpGet(`/exam/paper/${params.id}`).then((result) => toData(result));
}

/**
 * 修改试卷状态
 * @param {Object} params
 * @param {String} params.id
 * @param {Number} params.status -1=无效，1=有效
 */
export function updateExampaperStatus(params) {
    return httpPut(`/exam/paper/status`, params).then((result) => toData(result));
}

/**
 * 删除试卷
 * @param {Object} params
 * @param {String} params.id
 */
export function delExampaper(params) {
    return httpDel(`/exam/paper/${params.id}`).then((result) => toData(result));
}


/**
 * 查询试卷-试题列表
 * @param {Object} queryParam
 * @param {Number} queryParam.title 题目
 * @param {String} queryParam.type 类型 1-判断 2-单选 3-多选 4-填空 5-问答
 * @param {Number} queryParam.status 状态(1-正常 -1停用)
 * @param {Object} pageParam
 * @param {Number} pageParam.pageNo
 * @param {Number} pageParam.pageSize
 */
export function queryExampaperQuestionList(queryParam, pageParam) {
    return httpGet(`/exam/paper/question/list`, queryParam).then((result) => {
        let data = toData(result);
        return createPageDataPromise({ data, totalCount: data.length, pageSize: data.length });
    });
}

/**
 * 添加试卷-试题
 */
export function addExampaperQuestion(params) {
    return httpPost(`/exam/paper/question`, params).then((result) => toData(result));
}

/**
 * 删除试卷-试题
 * @param {Object} params
 * @param {String} params.id
 */
export function deleteExampaperQuestion(params) {
    return httpDel(`/exam/paper/question/${params.id}`).then((result) => toData(result));
}

/**
 * 修改试卷-试题序号
 * @param {Object} params
 * @param {String} params.id
 * @param {Number} params.sortNo 排序号
 */
export function updateExampaperQuestionSort(params) {
    return httpPut(`/exam/paper/question/sort`, params).then((result) => toData(result));
}

/**
 * 修改试卷-试题分数
 * @param {Object} params
 * @param {String} params.id
 * @param {Number} params.score 分数
 */
export function updateExampaperQuestionScore(params) {
    return httpPut(`/exam/paper/question/score`, params).then((result) => toData(result));
}

/**
 * 查询考试列表
 * @param {Object} queryParam
 * @param {String} queryParam.categoryId 分类ID
 * @param {String} queryParam.author 出卷人
 * @param {String} queryParam.code 考试代码
 * @param {String} queryParam.creator 发起人
 * @param {Number} queryParam.status 状态(1-未开始 2-进行中 3-已结束 4-已取消)
 * @param {String} queryParam.title 考试名称
 * @param {String} queryParam.type 类型（1-练习 2-考试）
 * @param {String} queryParam.userId 只看我的考试
 * @param {String} queryParam.beginTime 开始时间
 * @param {String} queryParam.endTime 结束时间
 * @param {Object} pageParam
 * @param {Number} pageParam.pageNo 
 * @param {Number} pageParam.pageSize 
 */
export function queryExaminationList(queryParam, pageParam) {
    return httpGet(`/exam/info/list`, toPageQueryParam(queryParam, pageParam)).then((result) => toPageData(result, pageParam));
}

/**
 * 添加考试
 * @param {Object} params
 * @param {String} params.categoryId 分类ID
 * @param {String} params.code 考试代码
 * @param {String} params.creator 发起人
 * @param {String} params.description 描述
 * @param {String} params.id ID
 * @param {String} params.paperId 试卷ID
 * @param {String} params.status 状态(1-未开始 2-进行中 3-已结束 4-已取消)
 * @param {String} params.title 考试名称
 * @param {String} params.type 类型（1-练习 2-考试）
 * @param {Number} params.userNum 参与人数
 */
export function addExamination(params) {
    return httpPost(`/exam/info`, params).then((result) => toData(result));
}

/**
 * 修改考试
 * @param {Object} params
 * @param {String} params.categoryId 分类ID
 * @param {String} params.code 考试代码
 * @param {String} params.creator 发起人
 * @param {String} params.description 描述
 * @param {String} params.id ID
 * @param {String} params.paperId 试卷ID
 * @param {String} params.status 状态(1-未开始 2-进行中 3-已结束 4-已取消)
 * @param {String} params.title 考试名称
 * @param {String} params.type 类型（1-练习 2-考试）
 * @param {Number} params.userNum 参与人数
 */
export function updateExamination(params) {
    return httpPut(`/exam/info`, params).then((result) => toData(result));
}

/**
 * 查询考试详情
 * @param {Object} params
 * @param {String} params.id
 */
export function queryExaminationDetail(params) {
    return httpGet(`/exam/info/${params.id}`).then((result) => toData(result));
}

/**
 * 取消考试
 * @param {Object} params
 * @param {String} params.examId 考试ID
 */
export function updateExaminationCancel(params) {
    return httpPut(`/exam/info/cancel`, params).then((result) => toData(result));
}

/**
 * 删除考试
 * @param {Object} params
 * @param {String} params.id
 */
export function delExamination(params) {
    return httpDel(`/exam/info/${params.id}`).then((result) => toData(result));
}

/**
 * 考试成绩详情
 * @param {Object} params
 * @param {String} params.id
 */
export function queryExamResult(params) {
    return httpGet(`/exam/result/${params.id}`).then((result) => toData(result));
}

/**
 * 自动阅卷
 * @param {Object} params
 * @param {String} params.id
 */
export function excuteAutoReview(params) {
    return httpPost(`/exam/result/auto-review`,params).then((result) => toData(result));
}

/**
 * 前往阅卷
 * @param {Object} params
 * @param {String} params.id
 */
export function toResultReview(params) {
    return httpGet(`/exam/result/review/${params.id}`).then((result) => toData(result));
}

/**
 * 查询成绩列表
 * @param {Object} queryParam
 * @param {Object} pageParam
 * @param {Number} pageParam.pageNo 
 * @param {Number} pageParam.pageSize 
 */
export function queryExamResultList(queryParam,pageParam) {
    return httpGet(`/exam/result/list`, toPageQueryParam(queryParam, pageParam)).then((result) => toPageData(result, pageParam));
}


